BIOS(Basic Input Output Systemの略)は バイオスと読みます。
BIOSは、コンピュータのマザーボードや拡張カード上に搭載されているフラッシュROMに書き込まれたプログラムで、周辺機器との間の入出力を制御する基本的なプログラムです。コンピュータの起動時にオペレーティングシステム(OS)よりも前に読み出され、どんなハードウェアが接続されているか、各種ハードウェアが正常に起動するかをチェックし、そのデータをOSに引き渡します。
BIOSの役割とは、
BIOSのセットアップはBIOS設定画面で行います。設定画面を表示させるには、コンピュータの電源投入時に、特定のキーを押すことで表示されます。(F1キー・F2キー・DELETEキーなど)
BIOSの設定画面では以下のような設定が可能です。
|
IRQは割込み要求と呼ばれ、各種デバイスがCPUを呼び出すときの信号のことで、割込み要求の信号を受け取ると処理中のCPUは処理を一旦中断し、どのデバイスからの要求なのかを判断し、要求のあったデバイスの処理を実行します。
コンピュータのIRQは0~15までの番号で表わされ、それぞれ各デバイスに自動的に割り振られています。
0 | システムタイマー |
1 | キーボード |
2 | 割込みコントローラ |
3 | シリアルポート( COM2 ) |
4 | シリアルポート( COM1 ) |
5 | 空き |
6 | フロッピーディスクドライブ |
7 | プリンタポート( LPT1 ) |
8 | リアルタイムクロック |
9 | 空き |
10 | 空き |
11 | USBコントローラ |
12 | PS/2マウス |
13 | 数値データプロセッサ |
14 | プライマリIDE |
15 | セカンダリIDE |
通常、IRQ番号は各デバイスに自動的に割り当てられますが、自動で割り当てができなかった場合や、手動で割り当てを行う場合などの時には、IRQ番号が重複しないようにしなければなりません。IRQ番号が重複すると、デバイスが動作しなかったり、動作しても不安定になったりします。
IRQ番号の割り当ては、/proc/interrupts/ で確認できます。
# cat /proc/interrupts |
CPU0 CPU1 0: 8381673 34505 IO-APIC-edge timer 1: 6 5 IO-APIC-edge i8042 8: 1 0 IO-APIC-edge rtc 9: 0 1 IO-APIC-level acpi 12: 57 46 IO-APIC-edge i8042 14: 112 74355 IO-APIC-edge ide0 15: 0 0 IO-APIC-edge ata_piix 169: 3 251712 IO-APIC-level uhci_hcd:usb2, eth0 177: 0 0 IO-APIC-level ehci_hcd:usb1 185: 0 0 IO-APIC-level uhci_hcd:usb3 193: 2432 20444 IO-APIC-level ioc0 NMI: 0 0 LOC: 8413247 8413237 ERR: 0 MIS: 0 |
CPUが各種デバイスとデータを送受信するために使う窓口のこと。「入出力ポート」とも呼ばれます。それぞれのI/Oポートは識別するための固有のI/Oポートアドレスを持っています。
PC/AT互換機ではメモリ領域の0000h~FFFFhが使用されます。
I/OポートアドレスもIRQと同様に重複しないように割り当てる必要があります。
I/Oポートアドレスの割り当ては、/proc/ioports で確認できます。
# cat /proc/ioports |
0000-001f : dma1 0020-0021 : pic1 0040-0043 : timer0 0050-0053 : timer1 0060-0060 : keyboard 0064-0064 : keyboard 0070-0077 : rtc 0080-008f : dma page reg 00a0-00a1 : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : libata 01f0-01f7 : ide0 03c0-03df : vga+ 03f6-03f6 : ide0 03f8-03ff : serial 0400-043f : 0000:00:1f.0 0400-043f : pnp 00:0c 0440-045f : 0000:00:1f.3 0440-045f : i801_smbus 0480-048f : 0000:00:1f.2 0480-048f : ata_piix 0520-053f : pnp 00:01 0540-0547 : pnp 00:01 0580-05ff : 0000:00:1f.0 0580-0583 : ACPI PM1a_EVT_BLK 0584-0585 : ACPI PM1a_CNT_BLK 0588-058b : ACPI PM_TMR 05a8-05af : ACPI GPE0_BLK 0cf8-0cff : PCI conf1 2200-221f : 0000:00:1d.0 2200-221f : uhci_hcd 2600-261f : 0000:00:1d.1 2600-261f : uhci_hcd 3000-3fff : PCI Bus #01 3000-30ff : 0000:01:01.0 4000-4fff : PCI Bus #03 4000-4fff : PCI Bus #04 4000-40ff : 0000:04:01.0 4000-40ff : mpt 5000-ffff : PCI Bus #07 |
デバイスとメモリ間でデータを転送する方法の1つ。CPUを介さずに、バス上のデバイスとメモリ間で(もしくはメモリ間同士で)直接データを転送する機能のことをいいます。CPUに負担をかけることなくデータの入出力を行うことができるので、現在実行中のタスクなどの実行が妨げられることがありません。また、CPUの負荷が減るので全体の処理策度が向上します。DMAを制御する回路のことをDMAコントローラといいます。
DMAチャネルは、デバイスがDMAコントローラに対してデータ転送を要求するために使う通信経路。一つのチャネルを複数のデバイスで共有できないため、DMA転送を利用するデバイスの間でDMAチャネルが衝突しないように設定する必要があります。
最近ではマザーボード上のDMAコントローラは使用されないことが多く、/proc/dmaを表示にはDMAコントローラ同士を接続する「cascade」表示になっている場合が多い
転送モードには、シングル転送モード、ブロック/デマンド転送モード、カスケード転送モード、自動初期化転送モードがあります。
DMAチャネルの割り当ては、/proc/dma で確認できます。
# cat /proc/dma 4: cascade |
※上の例ではDMAチャネルにデバイスは割り当てられていません。cascadeは2つの制御チップを接続していることを示しています。
DMAチャネルを利用するのはISAデバイスであり、現在主流のPCIバスではバスマスタリングという方式をとっています。バスマスタリングはチャネル番号を使いません。
Linuxでは、ハードウェアへのアクセスを抽象化して扱えるようデバイスファイルというものを持っています。
すべてのハードウェアはデバイスファイルを持っていて、デバイスファイルの読み書きを通してハードウェアにアクセスするようになっています。
デバイス・ファイルはすべて、/dev以下に配置されています。/devで、lsコマンドを実行した結果を見ると、ファイル情報の先頭が「b」または「c」になっています。通常のファイルは「-」、ディレクトリは「d」、シンボリック・リンクは「l」ですから、通常のファイルでないことがわかります。実際に、デバイス・ファイルは通常のファイルとは異なり、カーネルがデバイスを識別するためにあります、メジャー番号・マイナー番号など、ごく少数のデータだけを保持しています。
プログラムからこれらのファイルに対してopen()などのシステム・コールを用いてアクセスすると、カーネル内に組み込まれたデバイス・ドライバが呼び出され、ファイルの代わりにデバイスにアクセスします。
アクセスの際、バッファを用いるものをブロック・デバイスと呼び、用いないものをキャラクタ・デバイスと呼びます。ls -alの実行結果で「b」とある「sda1」(SCSI接続のハード・ディスク)などはブロック・デバイス、「c」とある「tty1」(端末)などはキャラクタ・デバイスです。
デバイスごとのDMA、IRQ、I/Oアドレスを表示するには、lsdev コマンドを実行します。
# lsdev |
Device DMA IRQ I/O Ports ------------------------------------------------ 0000:00:1d.0 2200-221f 0000:00:1d.1 2600-261f 0000:00:1f.0 0400-043f 0580-05ff 0000:00:1f.2 0480-048f 0000:00:1f.3 0440-045f 0000:01:01.0 3000-30ff 0000:04:01.0 4000-40ff acpi 9 ACPI 0580-0583 0584-0585 0588-058b 05a8-05af ata_piix 15 0480-048f cascade 4 dma 0080-008f dma1 0000-001f dma2 00c0-00df ehci_hcd:usb1 177 eth0 169 fpu 00f0-00ff i801_smbus 0440-045f i8042 1 12 ide0 14 01f0-01f7 03f6-03f6 ioc0 193 keyboard 0060-0060 0064-0064 libata 0170-0177 mpt 4000-40ff PCI 0cf8-0cff 3000-3fff 4000-4fff 4000-4fff 5000-ffff pic1 0020-0021 pic2 00a0-00a1 pnp 0400-043f 0520-053f 0540-0547 rtc 8 0070-0077 serial 03f8-03ff timer 0 timer0 0040-0043 timer1 0050-0053 uhci_hcd 2200-221f 2600-261f uhci_hcd:usb3 185 vga+ 03c0-03df |
Linuxカーネルが認識しているデバイスに関する情報は、/proc 以下のファイルで確認できます。
● /proc 以下の主なファイル/proc/bus/usb/* | USBデバイス情報 |
/proc/cpuinfo | CPU情報 |
/proc/interrupts | IRQ情報 |
/proc/pci | PCIデバイス情報 |
/proc/scsi/scsi | SCSIデバイス情報 |
/proc/devices | 現在設定されている各種のキャラクタデバイスやブロックデバイスを表示 (モジュールがロードされていないデバイスは除く) |
/proc/meminfo | システム上の現在のRAM使用率についての情報を表示 |
/proc/scsi/scsi | SCSIデバイス情報 |
/proc/mounts | システムで使用中の全マウントの一覧を表示 |
/proc/partitions | パーティションブロックの割り当て情報を表示 |
デバイスファイルにはブロックデバイスとキャラクタデバイスがあります。
(ls -l /dev を実行したときに、先頭がbならブロック、cならキャラクタデバイス)
ブロックデバイスはブロック単位でデバイスにアクセスし、ハードディスク、RAMディスク、RAIDボリュームなどが相当します。
キャラクタデバイスはキャラクタ(文学)単位でのアクセスとなり、キーボード、マウス、端末、プリンタなどが相当します。
SCSI(Small Computer System Interface)は、コンピュータと周辺機器などのハードウェア間のデータのやりとりを行うインタフェース規格の一つです。
SCSIでの各機器の接続はバス形式ですが、各機器を数珠つなぎで繋いでいくため、「デイジーチェーン接続」とも言われます。各機器は1つのSCSIバスに接続しなければいけません。また、バスの両端には信号の反射を防ぐため、ターミネータを接続しなければいけません。なお、ターミネータは、必ずしもバス終端に接続されるわけではなく、ホストバスアダプタやSCSI機器に内蔵される場合もあります。ターミネータがない場合は、SCSIデバイスの動作が不安定になったり、動かなくなったりします。
SCSIバスに接続する各機器はSCSIデバイスと呼ばれます。SCSIにはデータ幅が8ビットのタイプと16ビットのタイプがあり、各デバイスは、8ビットのタイプの場合は各々0から7、16ビットのタイプの場合は、0から15 までの番号で区別されます。この番号のことをSCSI IDといいます。通常、SCSIデバイスは各々、明示的にSCSI IDを設定しなければならないが、SCAMという拡張仕様を用いることで、自動的に設定することも可能です。
SCSI IDは、7→0,15→8の順にバス使用優先権が割り振られるため、SCSIデバイスを制御するコントローラ(SCSIホストアダプタ)のIDは7に、処理が遅くバスを頻繁に開放する機器(テープドライブやCD-ROM等)に優先順位の高い番号を割り当てます。SCSI ID はどのデバイスとも重複してはいけません。SCSI接続されているデバイスの情報を確認するには、/proc/scsi/scsi を参照します。
# cat /proc/scsi/scsi |
Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: LSILOGIC Model: 1030 IM Rev: 1000 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi0 Channel: 00 Id: 08 Lun: 00 Vendor: IBM Model: 25P3495a S320 1 Rev: 1 Type: Processor ANSI SCSI revision: 02 Host: scsi0 Channel: 01 Id: 00 Lun: 00 Vendor: IBM-ESXS Model: GNS073C3ESTT0ZFN Rev: JP85 Type: Direct-Access ANSI SCSI revision: 04 Host: scsi0 Channel: 01 Id: 01 Lun: 00 Vendor: IBM-ESXS Model: GNS073C3ESTT0ZFN Rev: JP85 Type: Direct-Access ANSI SCSI revision: 04 |
SCSI規格 | データ幅 (ビット) | 最大接続数 (台) | 最大転送速度 (MB/秒) |
SCSI-1 | 8 | 7 | 5 |
SCSI-2(Fast SCSI) | 8 | 7 | 10 |
SCSI-2(Wide SCSI) | 16 | 15 | 20 |
Ultra SCSI | 8 | 7 | 20 |
Ultra Wide SCSI | 16 | 15 | 40 |
Ultra2 SCSI | 16 | 15 | 80 |
Ultra 160 SCSI | 16 | 15 | 160 |
Ultra 320 SCSI | 16 | 15 | 320 |
一部のSCSIホストアダプタには、独自のBIOSを搭載しているものもあります。SCSI BIOSでは、SCSIコントローラのSCSI IDや、データ転送速度、内臓ターミネータのオン/オフの切り替えなどの設定をや行うことができます。SCSI BIOSの設定画面もコンピュータの起動時に特定のキーを押すことで表示されます。
Linuxはハードディスクなどのディスク装置だけではなく、すべてのデバイス(CD-ROM、シリアルポートなど)をデバイスファイルと呼ばれる特殊なファイルとして扱います。
デバイスファイルは /dev ディレクトリに格納され、SCSIディスクの場合、デバイスファイル名は、ディスク名にパーティション番号を付与したものとなります。
ディスク名を見れば何番目のSCSIディスクであるかわかるようになっています。
1番目のSCSIディスク・・・・・sda
2番目のSCSIディスク・・・・・sdb
3番目のSCSIディスク・・・・・sdc
4番目のSCSIディスク・・・・・sdd
デバイスファイル名 | 説明 |
/dev/sda1 | 1番目のハードディスクドライブの1番目のパーティション |
/dev/sda2 | 1番目のハードディスクドライブの2番目のパーティション |
/dev/sdb1 | 2番目のハードディスクドライブの2番目のパーティション |
/dev/sdb2 | 2番目のハードディスクドライブの2番目のパーティション |
/dev/scd0 | 1番目のCD-ROMドライブ |
/dev/scd1 | 2番目のCD-ROMドライブ |
/dev/st1 | 1番目のテープドライブ |
/dev/st2 | 2番目のテープドライブ |
また、IDEディスクもデバイスファイルとして扱われ、下記の様にディスク名が割り当てられます。
プライマリ・マスター・・・・・hda
プライマリ・スレーブ・・・・・hdb
セカンダリ・マスター・・・・・hdc
セカンダリ・スレーブ・・・・・hdd
SCSIディスク同様、これらのディスク名にパーティション番号を付与したものがデバイスファイル名となり、セカンダリ・スレーブに接続されているIDEディスク3番目のパーティションのデバイスファイルは
/dev/hdd3となります。
ただし、最近のLinux(カーネルバージョンが2.6.18以降)では、IDEディスクもSCSIディスクと同様に扱うようになり、/dev/hda を /dev/sda と表記するようになっているので注意が必要です。
デバイスファイル名の確認は、df コマンドで確認できます。
# df |
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/VolGroup00-LogVol00 67292728 3123584 60695736 5% / /dev/sda1 101086 18459 77408 20% /boot tmpfs 517452 0 517452 0% /dev/shm |
パソコンで記憶装置を接続するためのインターフェースで、IDE(ATA)の後継規格です。「SATA」(「サタ」と読む)と略すこともあります。従来のIDEでは複数の信号を同時に送るパラレル転送だったのに対し、Serial ATAでは1組の信号線を使って、データを順次送るシリアル転送を採用しています。これにより、信号間の干渉がなくなり、データ転送のタイミング調整も不要になることから、より高速なデータ転送が可能になっています。また、IDEでは接続に40ピンのフラットケーブルを使用していたのに対し、Serial ATAでは幅1cm程度のスリムなケーブルになり、取り扱いが容易になっています。さらに、設定のためのジャンパーピンが不要で、ホットプラグ(パソコンの電源を入れたまま交換できる)に対応しているなど利便性が向上しており、現在ではIDEに代わって広く使用されています。データ転送速度は、現在のSerial ATA 2.0で300MB/秒、Serial ATA 3.0では600MB/秒となります。Serial ATAを外付けの記憶装置の接続に利用するExternal Serial ATAという規格もあり、eSATA(「イーサタ」と読む)と表記されます。
Linuxカーネルが認識しているPCIデバイス一覧を表示するには「lspci」コマンドを実行します。デバイスの種類、ベンダー、デバイス名といった情報を一覧表示します。
# lspci |
00:00.0 Host bridge: Intel Corporation E7520 Memory Controller Hub (rev 0c) 00:00.1 Unassigned class [ff00]: Intel Corporation E7525/E7520 Error Reporting Registers (rev 0c) 00:02.0 PCI bridge: Intel Corporation E7525/E7520/E7320 PCI Express Port A (rev 0c) 00:04.0 PCI bridge: Intel Corporation E7525/E7520 PCI Express Port B (rev 0c) 00:06.0 PCI bridge: Intel Corporation E7520 PCI Express Port C (rev 0c) 00:07.0 PCI bridge: Intel Corporation E7520 PCI Express Port C1 (rev 0c) 00:08.0 System peripheral: Intel Corporation E7525/E7520/E7320 Extended Configuration Registers (rev 0c) ・ ・ 省略 |
オプション「-v」をつけるとIRQやI/Oポートアドレスの詳細情報を表示することができます。
「-vv」を付けるとさらな詳しい情報を表示します。
# lspci -v |
00:00.0 Host bridge: Intel Corporation E7520 Memory Controller Hub (rev 0c) Subsystem: IBM Device 02dc Flags: bus master, fast devsel, latency 0 Memory at <ignored> (32-bit, non-prefetchable) Capabilities: [40] Vendor Specific Information: Len=05 <?> Kernel modules: e752x_edac 00:00.1 Unassigned class [ff00]: Intel Corporation E7525/E7520 Error Reporting Registers (rev 0c) Subsystem: IBM Device 02dc Flags: fast devsel 00:02.0 PCI bridge: Intel Corporation E7525/E7520/E7320 PCI Express Port A (rev 0c) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0 Bus: primary=00, secondary=02, subordinate=02, sec-latency=0 Capabilities: [50] Power Management version 2 Capabilities: [58] MSI: Enable- Count=1/2 Maskable- 64bit- Capabilities: [64] Express Root Port (Slot-), MSI 00 Kernel driver in use: pcieport-driver 00:04.0 PCI bridge: Intel Corporation E7525/E7520 PCI Express Port B (rev 0c) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0 Bus: primary=00, secondary=03, subordinate=05, sec-latency=0 I/O behind bridge: 00004000-00004fff Memory behind bridge: dd000000-deffffff Prefetchable memory behind bridge: 0000000050000000-00000000500fffff Capabilities: [50] Power Management version 2 Capabilities: [58] MSI: Enable- Count=1/2 Maskable- 64bit- Capabilities: [64] Express Root Port (Slot-), MSI 00 Kernel driver in use: pcieport-driver ・ ・ 省略 |
PCIカードを組み込む際に発生するトラブルとして多いのは、他のデバイスとIRQ番号が重複してしまうことです。
PCIカードはプラグ&プレイに対応しており、ほとんどの場合 IRQ番号などが自動的に割り当てられるため、特に設定を行う必要はありません。
もしIRQが衝突した場合は、BIOSでIRQを適切に設定し直す必要があります。
USB規格では、PCに電源を入れたまま周辺機器やパーツの取り付け・取り外しができるホットプラグに対応しています。以前は/sbin/hotplugを実行認識していましたが、現在では/sbin/hotplugを使用せず動的にデバイスを管理するudevを使用した対応が一般的となっています。
すなわち、ホットプラグデバイス接続時にカーネルがudevのデーモンであるudevdに通知し、udevdは/etc/udev/ディレクトリ以下に格納されたスクリプトを実行します。
このとき、デバイスに関する情報はシステム上のデバイスのデータベースを管理しているHALのデーモンであるhaldに通知され、新たにデバイスの登録が行われます。その後、D-BUS(dbus)により各アプリケーションにその情報が通知され、デバイスを使用できるようになります。
USBデバイスが接続されると/var/log/messageにログが出力されます。
Sysfsは、仮想化ファイル・システムであり、システム内のデバイスをユーザー空間に公開し、デバイスの挿入や取外しが行われるたびに、その表示内容が動的に更新されます。
クラス ドライバは、特定の種類の USB 装置(例えばディスクドライブ、プリンタ、スキャナ)と通信することができるソフトウェアコンポーネントです。適切な クラス ドライバがあれば、対応するすべての装置を接続することができ、すぐに作業を始めることができます。追加のソフトウェアをインストールする必要はありません。
クラス ドライバは一般的なクラスの USB 周辺機器向けに書かれているため、特定の機能を持つ製品の中には利用できないものが生じる場合があります。ある特定の USB 装置の機能が動作しない場合は、その装置に付属のドライバをインストールするか、メーカーの Web サイトから最新バージョンのドライバをダウンロードする必要があるかもしれません。
USB機器をコントロールするデバイスであるUSBホストコントローラには、次の種類があります。
USBコントローラを確認するには、dmesg コマンドか lspci コマンドか lsmod コマンドで確認します。
# dmesg | grep usb |
# lspci -v |
# lsmod | grep ehci ehci_hcd 33869 0 |
コントローラ | version | モジュール 2.4 | モジュール 2.4 |
UHCI | 1.1 | usb-uhci | uhci-hcd |
OHCI | 1.1 | usb-ohci | ohci-hcd |
EHCI | 2.0 | ehci-hcd | ehci-hcd |
USBデバイスが使用しているカーネルモジュールを表示するには、usbmodules コマンドを使用します。
BUS 001 、デバイス 001 のモジュールを表示するには
# usbmodules --device /proc/bus/usb/001/001 |
USBデバイスの情報は、/proc/bus/usb 以下のディレクトリに保存されています。
コンピュータに接続されているUSBデバイスの情報は、/proc/bus/usb/devices に記述されています。
# cat /proc/bus/usb/devices |
T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.18-348.3.1.el5 uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.1 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.18-348.3.1.el5 uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.0 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 4 B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.18-348.3.1.el5 ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:1d.7 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms |
また、lsusb コマンドを使うことで表示することもできます。
lsusb [オプション] |
|
-v | 詳細な情報を表示する |
-s [[パス]:] [デバイスID] | 指定されたパスやデバイスIDのデバイスのみ表示する |
-t | ツリー表示する |
# lsusb |
Bus 003 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 |
カーネルはOSの中核をなすプログラムで、ハードウェアの監視やアプリケーションの実行等を行います。そのカーネルでハードウェアの利用や監視を行うためにはデバイスドライバが必要となります。デバイスドライバは、「カーネルに組み込んで利用する場合」と「カーネルモジュールとして利用する場合」があります。
システム稼動中にロードされているカーネルモジュールを一覧表示するためには、「lsmod」を利用します。「lsmod」はカーネルモジュールごとに「名前」「サイズ」「利用回数」「このモジュールを参照しているモジュール名」を表示します。
cat /proc/modules としても lsmod と同じ出力になります。
# lsmod |
Module Size Used by autofs4 29253 3 hidp 23105 2 rfcomm 42585 0 l2cap 29633 10 hidp,rfcomm bluetooth 53925 5 hidp,rfcomm,l2cap lockd 63337 0 sunrpc 146685 2 lockd ip_conntrack_netbios_ns 6977 0 ipt_REJECT 9665 1 xt_state 6209 13 ip_conntrack 53281 2 ip_conntrack_netbios_ns,xt_state nfnetlink 10713 1 ip_conntrack iptable_filter 7105 1 ip_tables 17029 1 iptable_filter ip6t_REJECT 9409 1 xt_tcpudp 7105 32 ip6table_filter 6849 1 ip6_tables 18053 1 ip6table_filter x_tables 17349 6 ipt_REJECT,xt_state,ip_tables,ip6t_REJECT,xt_tcpudp,ip6_tables dm_multipath 25421 0 |
【 カーネルモジュールのロード(modprobe) 】
modprobe は設定ファイルやコマンドラインで指示することにより、モジュールのロード、アンロードや状態表示などさまざまなモジュール管理を行うことができます。
Linuxカーネルの機能の一部を、カーネル本体とは別にロード、アンロードできるように分離したバイナリファイルをモジュールと呼びます。多くの場合、ハードウェアにアクセスし、操作するためのドライバ部分がモジュールとなっています。
たとえば1つまたは複数のモジュールを、それが必要とするモジュールとあわせてロードしたり、モジュールロード時にスクリプトを実行したりすることができます。
modprobeの設定ファイルはカーネルのバージョンによって異なります。
カーネル2.4系で使用される設定ファイルは/etc/modules.conf、
カーネル2.6系で使用される設定ファイルは/etc/modprobe.confです。
これら設定ファイルに処理内容を記述して、その modprobe を実行すると、システムがモジュールをロードする際、設定ファイルに記述された処理内容が参照されて自動的に実行されます。
以下はモジュールbcm5700をロードしています。
# vi /etc/modprobe.conf |
alias eth0 bcm5700 |
# modprobe eth0 |
またカーネルモジュールを操作するとき「modprobe」は「modules.dep」ファイルを利用して、モジュール間の依存関係を調べます。その結果、モジュールが他のモジュールを必要としている場合は、そのモジュールを先にロードします。
modules.depファイルを最新の状態に更新するには、depmod コマンドを実行します。
# depmod |
【 カーネルモジュールのロード(insmod) 】
insmod もカーネルモジュール(モジュール)をロードするコマンドです。
ただし、insmodの場合は、モジュール間の依存関係に注意が必要。依存関係のあるモジュールがある場合、先にそのモジュールをロードしておく必要があります。
モジュールの動作に必要な別のモジュール(依存するモジュール)がロードされていない場合、insmodコマンドはエラーメッセージを表示し、ロードを中断します。どのモジュールが必要なのかを確認するには、「modprobe」コマンドの「-D」オプションを使います。
以下はモジュールsr_mod.koをロードしています。
# insmod /lib/modules/2.6.32-754.31.1.el6.x86_64/kernel/drivers/scsi/sr_mod.ko |
【 カーネルモジュールのアンロード(rmmod) 】
rmmod はカーネルモジュール(モジュール)をアンロードするコマンドです。
依存関係のあるモジュールがある場合、先にそのモジュールをアンロードしておく必要があります。
使用中のモジュールや、他のモジュールが依存しているモジュールをアンロードしようとした場合は、エラーメッセージを表示します。
以下はモジュールvfatをアンロードしています。
# rmmod vfat |
rmmodコマンド、modprobeコマンドともに、他のモジュールから依存されているモジュールをアンロードすることはできません(「-f」オプションを除く)。
www.it-shikaku.jp
[Top] | |
[講義目次] | |
[1.04:リポジトリとパッケージ管理] | |
[1.05:ハードウェア、ディスク、パーティション、ファイルシステム] | |
[1.05.1 ハードウェアの基礎知識と設定] | |
[1.05.2 ハードディスクのレイアウトとパーティション] | |
[1.05.3 ファイルシステムの作成と管理、マウント] | |
[1.06:シェルおよびスクリプト] | |
[講義検索] | |
[リンク集] |